package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.ProvinceCodeVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.UpperRelationIdVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.CountryAreaCodeNameVO;
import com.ssy.lingxi.member.merchant.model.vo.validate.request.*;
import com.ssy.lingxi.member.merchant.model.vo.validate.response.*;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员能力 - 会员审核入库、资料变更相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-05-18
 */
public interface IMemberAbilityDepositService {

    /**
     * 获取会员审核入库各个步骤分页查询列表页面下拉框
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<MemberDepositSearchConditionVO> getDepositPageConditions(HttpHeaders headers);

    /**
     * 分页查询“待审核入库资料”会员列表
     * @param headers Http头部新
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToVerifyDepositoryDetail(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待审核入库资料” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberToVerifyDepositDetailVO> getToVerifyDepositoryDetail(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待审核入库资料” - 根据选择的上级会员查询省列表
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<CountryAreaCodeNameVO>> getProvinceList(HttpHeaders headers, UpperRelationIdVO idVO);

    /**
     * “待审核入库资料” - 根据选择的上级会员查询省列表
     * @param headers Http头部信息
     * @param citiesVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<CountryAreaCodeNameVO>> getCityList(HttpHeaders headers, MemberDepositGetCitiesVO citiesVO);

    /**
     * “待审核入库资料” - 审核会员
     * @param headers Http头部信息
     * @param depositVO 接口参数
     * @return 审核结果
     */
    Wrapper<Void> toVerifyDepositoryDetail(HttpHeaders headers, MemberToVerifyDepositVO depositVO);

    /**
     * “待审核入库资料” - 批量审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> batchVerifyDepositoryDetail(HttpHeaders headers, ValidateIdsVO idVO);

    /**
     * 分页查询“待审核入库资质”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToVerifyDepositoryQualification(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待审核入库资质” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDepositDetailVO> getToVerifyDepositoryQualification(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待审核入库资质” - 审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toVerifyDepositoryQualification(HttpHeaders headers, ValidateAgreeVO idVO);

    /**
     * “待审核入库资质” - 批量审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> batchVerifyDepositoryQualifications(HttpHeaders headers, ValidateIdsVO idVO);

    /**
     * 分页查询“待入库考察”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToInspectDepository(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待入库考察” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDepositDetailVO> getToInspectDepository(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待入库考察” - 审核
     * @param headers Http头部信息
     * @param depositVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toInspectDepository(HttpHeaders headers, MemberToInspectDepositVO depositVO);

    /**
     * 分页查询“待入库分类”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToClassifyDepository(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待入库分类” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberToClassifyDetailVO> getToClassifyDepository(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待入库分类” - “适用区域”-省列表
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<List<CountryAreaCodeNameVO>> getToClassifyProvinces(HttpHeaders headers);

    /**
     * “待入库分类” - “适用区域”-根据省编码查询市列表
     * @param headers Http头部信息
     * @param codeVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<CountryAreaCodeNameVO>> getToClassifyCities(HttpHeaders headers, ProvinceCodeVO codeVO);

    /**
     * “待入库分类” - 品类信息 - 查询结算方式与发票类型
     * @param headers Http头部信息
     * @return 查询结果
     */
    Wrapper<MemberClassifyCategoryItemVO> getToClassifyCategoryItems(HttpHeaders headers);

    /**
     * “待入库分类” - 审核
     * @param headers Http头部信息
     * @param depositVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toClassifyDepository(HttpHeaders headers, MemberToClassifyDepositVO depositVO);

    /**
     * 分页查询“待审核入库(一级)”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToDepositGradeOne(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待审核入库(一级)” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDepositGradeDetailVO> getToDepositGradeOne(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待审核入库(一级)” - 审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toDepositGradeOne(HttpHeaders headers, ValidateAgreeVO idVO);

    /**
     * “待审核入库(一级)” - 批量审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> batchDepositGradeOne(HttpHeaders headers, ValidateIdsVO idVO);

    /**
     * 分页查询“待审核入库(二级)”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToDepositGradeTwo(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待审核入库(二级)” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDepositGradeDetailVO> getToDepositGradeTwo(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待审核入库(二级)” - 审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toDepositGradeTwo(HttpHeaders headers, ValidateAgreeVO idVO);

    /**
     * “待审核入库(二级)” - 批量审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> batchDepositGradeTwo(HttpHeaders headers, ValidateIdsVO idVO);

    /**
     * 分页查询“待确认入库”会员列表
     * @param headers Http头部信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberDepositPageQueryVO>> pageToConfirmDepository(HttpHeaders headers, MemberDepositPageVO pageVO);

    /**
     * “待确认入库” - 查询会员详情
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberDepositGradeDetailVO> getToConfirmDepository(HttpHeaders headers, ValidateIdVO idVO);

    /**
     * “待确认入库” - 审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> toConfirmDepository(HttpHeaders headers, ValidateAgreeVO idVO);

    /**
     * “待确认入库” - 批量审核
     * @param headers Http头部信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<Void> batchConfirmDepositories(HttpHeaders headers, ValidateIdsVO idVO);
}
